BrEd Pitt, делать через найм юнитов или удалять призванного юнита если превышен лимит еды
а у абилки сбрасывать кд
и выдавать чтото наподобие "нужно построить зикурат"
А много ли юнитов будут с хп баром? если серьёзно то решения нет и фрейм не найти этот, оно зашито в недра движка. Но опять таки Disable pre-selection вариант всё таки, если потом отрисовать кастомные хп бары через специальную модель, если она будет эффектом, то это не вызовет никакой доп нагрузки даже у 100 юнитов.
может скинешь карту удали все что не связанно с предметами посмотрим что не так.
Вот скрин одного из предметов, который перестал работать. Boots of Travel - активка. Мне кажется это просто баг, так как перестает работать какой-то предмет, на самом деле, очень редко. Я думал может есть какое то логическое объяснение, но увы.
Спасибо за ответы.
Предлагаю для начала разбить действие на кучу мелких. Все расчёты разбить на мелкие и разнести по переменным, выводя на экран. А там и видно будет, ибо на скрине даже не вся строка видна.
NiktoTakoy, существует множество приказов
полного списка приказов не существует но есть частичный список в папке с джнгп (lib)
id приказов используются в спец функциях которые оканчиваются на ById (в гуи их нету вроде бы)
при желании ты можешь узнать айди нужного тебе приказа с помощью триггера предоставленного Mrachny
Steal nerves, насколько я понимаю, автору вопроса нужно совсем другое - он хочет чтобы у юнита было одновременно несколько улучшений на атаку, не важно откуда они берутся и даже не важно могут ли они быть активны одновременно. А проблема вся в циферке уровня улучшения на иконке атаки, которая начинает себя некорректно вести когда на атаку влияет больше одного улучшения.
можно просто исследование других рас насильно через триггер давать
Или создать копию улучшения для нейтралов и выдавать его триггерно при изучении родного, а циферку у юнита завязать именно на это улучшение. (одно улучшение для нейтралов, выдавать при изучении любого из соответствующих ему рассовых улучшений).
есть три события: начато исследование, отменено и завершено исследование.
запустить таймер в начале исследования. и из него узнать процент. есть нативки, позволяющие узнать: запущенное время, пройденное время и оставшее время до завершения
процент = пройденное время/запущенное время
при отмене или завершении удалить таймер
примерно как тутздесь даже проще, чем выяснить реальный процент стройки хуманов
Таких багов много, почему то оптимизатор берет данные из слк таблиц игры на часть объектов, пробуй wc3ultimate opt, на хайве выложена... Мб кто уже и новый виджитайзер запилил.
Тут скорее всего еще проблема с кодом карты, деоптимизаторы не восстанавливают данные на 100% и ошибки будут почти всегда, 100% рабочий способ - создавать объекты с нуля в карте руками, с теми же id и параметрами что в карте которую вы хотели восстановить...
В первую очередь, нужно выборочно оценивать и уменьшать размер текстур и количество мипмапов. Например, есть текстура кровли, которая в игре занимает существенную часть видимого пространства в декорациях, которая в целом как-то влияет своим качеством на восприятие картинки, и есть текстура какого-нибудь топорика, который держит в своих руках один из юнитов, и толком не разглядеть мелкие детали топорика. Но зачастую бывает так, что текстура топорика имеет размер 256х256 px, а текстура кровли 64х64 px.
Другой пример с иконками и другими элементами интерфейса, где не требуется более двух самых крупных мипмапов, а остальные можно благополучно удалить, т.к. оин почти ни при каких условиях не будут изображены.
Во-вторую очередь, нужно оптимизировать анимации нестандартных моделей юнитов. У нас до сих пор многие ничего не знают об этом, хотя уже есть инструмент, который делает это автоматически. Вот только Wiedzmin, автор тулзы пока ее не опубликовал, а пора бы дать всем ее пощупать.
Кроме оптимизации анимаций, следует применять все остальные способы, реализованные в mdlvis - это просто галочки, которые почистят прочий мусор, ничего сложного.
В Mdlvis используешь: Удаление свободных вершин, Удаление не связанных костей, Удаление ничейных КК, Линеаризация анимации. (настоятельно не рекомендую использовать параметр "Увеличение сжимаемости" как правило эта опция может удалять вершины тем самым испортив геометрию модели)
Переходим в Warcraft Model Editor, вкладка Редактировать-> Рассчитать границы
Сохраняем.
Как правило после расчета границ придется настраивать событийные объекты из за того что программа может сместить ключевые кадры, то есть нужно заново назначить им ключевые кадры например: следы от башмаков на земле должны быть видны только в анимации "Walk"
Переходим во вкладку Окна-> редактор узлов настраиваем видимость.
Сохраняем.
Опять открываем в WME сохраненную модель переходим во вкладку Менеджер текстур.
Там удаляем не используемые текстуры. Если не помнишь какие, то последовательно пытаешься удалить каждую текстуру, если WME ругается значит она используется если нет то ты нашел не нужную текстуру. Как правило после удаления поверхностей может остается ее анимация тут уже все ручками нужно удалять. Переходим во вкладку "Редактор анимации поверхности" и ищем не используемые удаляем.
Скачиваем MDX/M3 Optimizer c Хайва.
Разархивируем в отдельную папку, создаем там bat-ик, открываем блокнотом (перед этим копируем полный адрес папки, например: C:\Users\Asssssvi\Desktop\Warcraft Program\MDXM3 Optimizer)
вставляем следующее copt_win -p 32 -t 0.001 "адрес папки" и сохраняем.
скидываем в папку файл модели и перемещаем ее прямо на bat -ик должно получится "имя файла v2. mdx"
Этой программой мы удалили "бесполезные ключевые кадры" которые занимают лишнее(нет) место.
На этом в принципе все.
Помни что у каждой анимации должен быть первый и последний кадр(если кость была задействована в середине анимации и у нее будет отсутствовать начальный и последний кадр, то это будет ошибка, причем позиция и ротация точки это два разных параметра, то есть если ты изменил положение кости (переместил) то это перемещение должно иметь начальный и последний кадр так же и с ротацией они отдельны друг от друга, если этого нет, то анимация будет не коректно работать.
А на Хайвовском "Sanity test" будут сыпаться ошибки, кстати если все нормально то он должен показать серую надпись "Passed" то тогда можешь считать что она оптимизирована.
может скинешь карту удали все что не связанно с предметами посмотрим что не так.
Вот скрин одного из предметов, который перестал работать. Boots of Travel - активка. Мне кажется это просто баг, так как перестает работать какой-то предмет, на самом деле, очень редко. Я думал может есть какое то логическое объяснение, но увы.
Спасибо за ответы.
Предлагаю для начала разбить действие на кучу мелких. Все расчёты разбить на мелкие и разнести по переменным, выводя на экран. А там и видно будет, ибо на скрине даже не вся строка видна.
RobertStevenson, вейты вообще зло, а отсчёт можно сделать таймером. Точнее и без неожиданных багов.
Ждать пока - это вейт в цикле, работает это просто отвратно, сам с этим сталкивался. Лучше заменить на событие смерти колдуна.
Я всё же думаю, что дело не в вейтах. Выводи имя героя Hero[A]. Лучше выводить так: ("герой - ") + (Имя юнита (Hero[A])) + " " + (Число в строку (А)).
Если нет имени - героя просто нет в этой переменной.
Ну еще один вариант... Как я понял ты в начале игры выбираешь себе героя покупая в таверне. Так вот: Тебе понадобиться сделать 2 области.
И подставить свои значения в этот триггер (место Playble map area выбрать область в какую хочешь переместить героя)
Когда ты покупаешь героя он " входит в область" вокруг таверны (не забудь ее сделать).Дальше он перемещается в указанную тобой другую область (ее тоже не забудь). И я не добавил одно действие убить того кто покупал героя (у меня был светлячок).
Вроде бы все объяснил.
Если что не понятно пиши мне в ЛС.
Ну суть в том что при доведении здания до разрушения (смерти) оно переходит во владение тому игроку, который его и добил. Проще говоря - твой ластхит по вражескому зданию передаёт его тебе.
По-хорошему первое что надо сделать - запретить союзникам атаковать свои здания (или хотя бы столицы, о которых и идёт речь).
Второе - при получении зданием урона проверять кто его нанёс, если друг - отхиливать на весь урон, если враг - проверять не будет ли этот урон смертельным, и если ДА - давать столько хп, сколько надо что бы здание осталось в живых (обычно это урон + 1 хп). И при этом передавать юнита во владение тому игроку, который владеет юнитом который является источником этого урона.
По желанию можно отхилить здание полностью (на 100% своего хп)
Если по игроку то массив переменных по игроку, если прям каждого конкретного героя каждого игрока - то через custom value или прочий регистратор юнитов.
может скинешь карту удали все что не связанно с предметами посмотрим что не так.
Вот скрин одного из предметов, который перестал работать. Boots of Travel - активка. Мне кажется это просто баг, так как перестает работать какой-то предмет, на самом деле, очень редко. Я думал может есть какое то логическое объяснение, но увы.
Спасибо за ответы.
Предлагаю для начала разбить действие на кучу мелких. Все расчёты разбить на мелкие и разнести по переменным, выводя на экран. А там и видно будет, ибо на скрине даже не вся строка видна.
RobertStevenson, вейты вообще зло, а отсчёт можно сделать таймером. Точнее и без неожиданных багов.
Ждать пока - это вейт в цикле, работает это просто отвратно, сам с этим сталкивался. Лучше заменить на событие смерти колдуна.
Я всё же думаю, что дело не в вейтах. Выводи имя героя Hero[A]. Лучше выводить так: ("герой - ") + (Имя юнита (Hero[A])) + " " + (Число в строку (А)).
Если нет имени - героя просто нет в этой переменной.
Черная область за хп баром вроде свободно скейлится ибо просто черная текстура без анимаций. Изменение размера хп бара тоже вроде не багает (mdlvis нормально воспроизводит). Я так понял, правая грань хп бара привязана к кости, которая движется анимациями. Переведи в .mdl и пролистай на дно, там циферки очевидные :) Это должно покрыть все вопросы.
Работает только оригинал , точнее с него настройки на все остальные идут клоны спелла, настройки смотри в опен доте, так то она работ, но вот орб и ннсовместтмость с другими пассивками, это не очень.
от точки, которая создается, не используется, но удаляется
пика группы юнитов, которые все суммарно сколько их на карте нанесут бедной цели урон
и до атакованного юнита, которого вообще здесь не может быть)
что по сути, так я хз как можно прозевать "Цель способности", или как оно у вас называется в русифицированных триггерах. на стандартной версии это target of ability being cast
цикл здесь скорее всего не нужен, если конечно только смысл действительно в том что бы брать всех огров на карте и наносить цели урон.
может скинешь карту удали все что не связанно с предметами посмотрим что не так.
Вот скрин одного из предметов, который перестал работать. Boots of Travel - активка. Мне кажется это просто баг, так как перестает работать какой-то предмет, на самом деле, очень редко. Я думал может есть какое то логическое объяснение, но увы.
Спасибо за ответы.
Предлагаю для начала разбить действие на кучу мелких. Все расчёты разбить на мелкие и разнести по переменным, выводя на экран. А там и видно будет, ибо на скрине даже не вся строка видна.
RobertStevenson, вейты вообще зло, а отсчёт можно сделать таймером. Точнее и без неожиданных багов.
Ждать пока - это вейт в цикле, работает это просто отвратно, сам с этим сталкивался. Лучше заменить на событие смерти колдуна.
Я всё же думаю, что дело не в вейтах. Выводи имя героя Hero[A]. Лучше выводить так: ("герой - ") + (Имя юнита (Hero[A])) + " " + (Число в строку (А)).
Если нет имени - героя просто нет в этой переменной.
Проверяешь циклом от 1 до длины строки по символу в строке, когда попадётся решётка, то делаешь Substring этого куска и продолжаешь, следующий Substring прибавится к предыдущему. Просто посиди и спокойно подумай, как это можно реализовать, скорее всего первый вариант у тебя будет использовать массу переменных, после этого спокойно прикинь, как можно свести использование переменных до минимума. Это на самом деле простой алгоритм, просто крупный, а следовательно муторный.
Не разбирал статью, но когда расшифровывал систему кодов в какой-то карте, то именно так и было там сделано, что малая часть символов содержат информацию, а остальное мусор для массивности, который имитирует зашифорванность, чтобы данные не были очевидны.
количество ресурсов хранить в переменных
при получении приказа постройки здания проверять достаточно ли ресурсов
если не достаточно то отдать триггерному юниту приказ стоп и вывести на экран сообщение "недостаточно ресурсов"
со всем остальным аналогично
awesomesk1ll, именно таблицы рекордов и окна таймера нет в игровом интерфейсе. думаю, что нужно при импорте сразу указать путь, а не в игровом интефейсе.
Именно их может и не быть, фон для подобных окон задается один общий для нескольких элементов. (окно чата F12, окно союзников F11, окно ожидания игрока, когда он лагает, окно когда соединение прервано например ещё). Аналогично и с рамкой. Более точнее вечером сориентировать смогу только.
Лови. Как я и писал выше, учти что меняется не только это окошко.
Попробуй конвертировать через war3 image extracror, а в фш сохрани картинку как 32 битную. Ну и разумеется разрешение 512х512
Когда будешь вставлять в карту, закинь картинку в мапу , а еще тебе понадобится LoadScreen.mds. В свойствах карты на загрузочный экран установишь LoadScreen.mdx, ну это я так, на всякий случай. Саму картинку нужно назвать FullScreen.blp
>>Но при нажатии кнопка обрабатывается неправильно, будто бы игнорируя 1 игрока и обрабатывается для 2 игрока (исходя из того что пишет [Дебаг] нажата кнопка №2, но может быть я ошибаюсь).
Мб где-то слетела бж функция GetConvertedPlayerID и изза этого цифорки поломались
Тык
function GetConvertedPlayerId takes player whichPlayer returns integer
return GetPlayerId(whichPlayer) + 1
endfunction
да какой то баг скорее всего, у кого то даже фаталы есть что когда запускаешь тест мапы и дерутся юниты - вылетает все (у меня такое же есть). А в обычном мили все норм
Каждый вопрос заслуживает отдельного обсуждения, а на все стало лень ответ печатать, когда начал.
Печатать реально долго, легче было реализовать примеры в карте:
Кроме последнего пункта, его нужно персонально рассматривать, так как игра не подразумевает использование для юнита двух списков. Например, можно наполнить список построек у юнита всеми зданиями, часть из которых блокировать при открытии одного списка и разблокировать при открытии второго, но это подходит, когда один рабочий. Можно сделать второй список из книги заклинаний, куда добавлены способности на основе игрушечных строений, чтобы было видно карту пути и всё такое, но там для них используется один приказ, то есть всегда одинаковое здание будет при нажатии на любую способность, а ещё нет стоимости золота и дерева, что тоже придётся как-то ваять триггерно. Можно перевоплощать юнита при смене списка в другого, но там тоже сложности, не помню точно какие, вроде бы связаны с расой, так как все строят по-разному.
С точкой сбора всё просто. Способность у игрока не заблокировать, потому нужно забрать её у всех зданий, которые есть на карте, либо будут построены.
Группа из максимум 9 юнитов работает немножко коряво, ранее мы с PT153 находили какой-то вариант, чтобы работало быстро, но лень пользоваться поиском. Вроде каждую 0.01 секунду проверялось количество выбранных юнитов, лишние удалялись из выбора.
Чтобы не было очереди, пришёл в голову лишь вариант с апгрейдом здания. Но у меня реализован просто пример для одного конкретного здания, а для нескольких абстрактных зданий нужно делать текстовым триггером, который будет для каждого здания запускать локальный таймер на нужное время и добавлять анимационный текстаг work. По отмене апгрейда, либо истечению таймера анимационный тег удаляется и создаётся воин, к которому привязывается соответствующий звук. Но есть и другие варианты, типа создавать внутри здания другое, которое реально будет производить юнитов, когда заказал апгрейд, там иная реализация. И не упомянул про затрачиваемые ресурсы. Потребуется забирать/возвращать часть ресурсов при отмене апгрейда.
На примере триггеров и фиолетовых строк в редакторе объектов смотри, как сделано улучшение Бугая в Дренорского бугая.
Конечно, мог бы сделать MUI триггер на GUI для отсутствия очереди, но это было бы громоздко и в техническом смысле уродливо. производящие здания заносились бы в массив, для которого будет массив таймеров, которые будут заноситься в виде событий на истечение таймера в другой триггер, а точнее будет несколько массивов таймеров, по максимальному числу тренируемых юнитов в любом производящем здании.
» WarCraft 3 / Пища и призванные юниты
» WarCraft 3 / Текстуры в Reforged.
» WarCraft 3 / Почему может не работать триггер?
» WarCraft 3 / Найм другому игроку
» WarCraft 3 / WURST Импорт иконок
» Администрация XGM / Дата заданий
» WarCraft 3 / Бинды для персонажей Warcraft3 1.26, где же они хранятся?
» WarCraft 3 / Отображение юнита игрока
» WarCraft 3 / Оптимизация.
» WarCraft 3 / Почему может не работать триггер?
» WarCraft 3 / Как сделать такой триггер?
» WarCraft 3 / Помощь с условием тригера
» WarCraft 3 / Почему может не работать триггер?
» WarCraft 3 / Как сохранить имя героя при замене?
» WarCraft 3 / Проблема с уроном
» Администрация XGM / Вставка изображений создаёт миниатюру вначале текста
» WarCraft 3 / Почему может не работать триггер?
» WarCraft 3 / Сейв Лоад
» WarCraft 3 / Ускорить анимацию модели
» WarCraft 3 / Таблица рекордов
» WarCraft 3 / Непонятная проблема
» WarCraft 3 / Баг на карте warcraft 3 классика
» WarCraft 3 / Вопрос по триггерам Warcraft 3